Sistemas de Coordenadas

void cdGetCanvasSize(int *width, int *height, double *width_mm, double *height_mm); [em C]
cdGetCanvasSize() -> (width, heigth, mm_width, mm_height: number) [em Lua]

Fornece como retorno o tamanho do canvas em pixels e em milímetros. Assim como em todas as funções da biblioteca CD, é possível ignorar um parâmetro de retorno configurando o seu ponteiro para NULL, isto é, chamando cdGetCanvasSize(&w, &h, NULL, NULL)para obter apenas os valores em pixels.

void cdUpdateYAxis(int *y); [em C]
cdUpdateYAxis(yc: number) -> (yr: number) [em Lua]

Em alguns sistemas de gráficos a origem fica no canto superior esquerdo do canvas, com a direção do eixo Y apontando para baixo. Neste caso a função converte do sistema de coordenadas da biblioteca CD para o sistema interno do driver do canvas ativo, e vice-versa. Caso contrário não faz nada.

void cdMM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy); [em C]
cdMM2Pixel(mm_dx, mm_dy: number) -> (dx, dy: number) [em Lua]

Converte os tamanhos em milímetros para pixels (coordenadas canvas). Parametros com ponteiro NULL são ignorados.

void cdPixel2MM(int dx, int dy, double *mm_dx, double *mm_dy); [em C]
cdPixel2MM(dx, dy: number) -> (mm_dx, mm_dy: number) [em Lua]

Converte os tamanhos em pixels (coordenadas canvas) para milímetros. Parametros com ponteiro NULL são ignorados. Use esta função para obter a resolução horizontal e vertical do canvas passando 1 como parâmetro em dx e dy, o valor da resolução é obtido usando a fórmula res=1.0/mm;

void cdOrigin(int x, int y); [em C]
cdOrigin(x, y: number) [em Lua]

Permite a translação da origem - por exemplo, para o centro do canvas. A função tira proveito da arquitetura da biblioteca para simular uma translação da origem, a mesma na realidade nunca chega a ser passada para o canvas ativo no driver respectivo. Valores padrão: (0, 0)


Clipping

int cdClip(int mode); [em C]
cdClip(mode: number) -> (old_mode: number) [em Lua]

Ativa ou desativa o clipping. Fornece como retorno o status anterior. Valores: CD_CLIPAREA, CD_CLIPPOLYGON ou CD_CLIPOFF. O valor CD_QUERY simplesmente dá como retorno o status corrente. Valor padrão: CD_CLIPOFF. O valor CD_CLIPAREA tem o mesmo significado que o antigo valor CD_CLIPON. O valor CD_CLIPPOLYGON ativa um polígono como região de clipping, porém funciona apenas em alguns drivers (favor verificar as notas de cada driver). O poligono de clipping deve ser definido antes de ativar o clipping de polígono, caso não esteja definido o estado atual de clipping não é modificado. ( Atualmente só os drivers derivados do driver básico Windows (com exceção do WMF), os derivados do driver básico X-Windows, o driver PS e o driver METAFILE.).

void cdClipArea(int xmin, int xmax, int ymin, int ymax); [em C]
void wdClipArea(double xmin, double xmax, double ymin, double ymax); (WC) [em C]
cdClipArea(xmin, xmax, ymin, ymax: number) [em Lua]
wdClipArea(xmin, xmax, ymin, ymax: number) (WC) [em Lua]

Define um retângulo para clipping. Apenas os pontos no intervalo: x_min<= x <= x_max, y_min <= y <= y_max serão impressos. Região padrão: (0, w-1, 0, h-1).

int cdGetClipArea(int *xmin, int *xmax, int *ymin, int *ymax); [em C]
int wdGetClipArea(double *xmin, double *xmax, double *ymin, double *ymax); (WC) [em C]
cdGetClipArea() -> (xmin, xmax, ymin, ymax, status: number) [em Lua]
w
dGetClipArea() -> (xmin, xmax, ymin, ymax, status: number) (WC) [em Lua]

Fornece como retorno o retângulo e o status de clipping. Não é necessário fornecer todos os ponteiros de retorno, pode-se fornecer apenas para os valores desejados.

int* cdGetClipPoly(int *n); [em C]
double * wdGetClipPoly(int *n); (WC) [em C]
cdGetClipPoly() -> (n: number, points: table) [em Lua]
wdGetClipPoly() -> (n: number, points: table) (WC) [em Lua]

Retorna o número de pontos do polígono de clipping e o polígono em sí em forma de uma seqüência de pontos cada um com suas respectivas coordenadas x e y (Ex: x1,y1,x2,y2,x3,y3,...).